/* 
 * File:   OperacionSecuencial.h
 * Author: maximiliano
 *
 * Created on 15 de junio de 2013, 17:20
 */

#ifndef OPERACIONSECUENCIAL_H
#define	OPERACIONSECUENCIAL_H
#include <vector>
#include "client_Operacion.h"
#include "common_Mutex.h"

using namespace std;

using namespace TP;
namespace TP { namespace Operaciones {

class OperacionSecuencial : public Operacion {

public:

    OperacionSecuencial(const uint32_t &pId);

    virtual ~OperacionSecuencial();

    virtual bool finalizada();
    
    virtual bool asociado(vector<string> &pRespuesta);
    
    virtual void ejecutar();
        
    virtual void procesarRespuesta (vector<string> &pRespuesta); 
    
    Operacion* AgregarOperacion (Operacion* pOperacion);
    
    virtual void LimpiarOperaciones();

    virtual bool setFinalizada(bool pEstado);
    
    Operacion* PrimeraOperacion();
    
    Operacion* SiguienteOperacion(Operacion* pOperacionActual);
    
private:
    vector <Operacion*> _operaciones;
    Mutex _finalizadaMutex;
};

}}
#endif	/* OPERACIONSECUENCIAL_H */

